home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / c / stut_src / dfstruct.h < prev    next >
Text File  |  1996-06-04  |  11KB  |  403 lines

  1. /*
  2.  * dfstruct.h
  3.  *                                                                 
  4.  * Purpose:
  5.  * --------
  6.  *    Ce fichier contient toutes les structures de donn‚es inter-
  7.  * d‚pendantes utilis‚es par STUT ONE (fenˆtres+contenu etc.. )
  8.  *
  9.  * Notes:
  10.  * ------
  11.  * Diagramme de d‚pendances:  
  12.  *
  13.  *                              dxf.h           arbotree.h
  14.  *                                   |                  /      \                      
  15.  * DATABLOCK    DEGASPIX  DATA_RECORDS  PAGEARBO   ARBO_TEXTPAR
  16.  *            \_________\____   |   ____/             / 
  17.  *                                    \  |  /                 /
  18.  *                              {DATAUNION}              /
  19.  *                                |           DIRSPEC
  20.  *                                  DATAPAGE       /           TEXTLINE
  21.  *                                       \     /               /
  22.  *                                            DATADIR           TEXTINFO          FNCTSPEC
  23.  *                                            /        \___   ___/       \
  24.  *                               DATAGROUP       \ /       TEXT_DRAWPAR
  25.  *                                               FTA
  26.  *
  27.  *          
  28.  *
  29.  * History:
  30.  * --------
  31.  * 25.11.93: Sortie des structures de gestion des fenêtres AES vers
  32.  *                    le fichier gemwdef.h   
  33.  * 25.11.93: Sortie des structures de gestion des voies vers le
  34.  *                    fichier serveur.h
  35.  */
  36.  
  37. /*
  38.  * V‚rifie si les pr‚sentes d‚finitions ont d‚ja ‚t‚ faites:
  39.  */
  40. #if  !defined( _DFSTRUCT_H_ )
  41. #define _DFSTRUCT_H_
  42.  
  43. /* 
  44.  * Headers indispensables:
  45.  */
  46.     #include    <aes.h>                        /* header AES */
  47.  
  48.  
  49. /*
  50.  * Custom Types:
  51.  */
  52.     #include "DXF.H"     
  53.     #include "ARBOTREE.H"
  54.  
  55.  
  56. /*
  57.  * Icon-extended-(datagroup)type (stocked in flags) definitions: 
  58.  * Les DG_xxx sont les types utilis‚s dans le champ type des DATAGROUPS
  59.  * et DATAPAGES.
  60.  * ils sont repris sous forme de DTYP_xxx
  61.  */
  62. typedef
  63.     enum
  64.     {
  65.         STYP_NONE =0,            /* pas de type */
  66.         DTYP_ARBO,
  67.         DTYP_PAGES,
  68.         DTYP_DATAS,
  69.         DTYP_TEXTS,
  70.         DTYP_PICS,
  71.         DTYP_UNKNOWN
  72.     }
  73.     DATATYPE;
  74.  
  75.     #define    NB_DATAGROUPS        5        /* On va cr‚er un emplacement pour 5 datagroups */
  76.     #define    RAMPATH_MAXLEN        107    /* Suffit pour 10 dossiers + 1 nom de fichier */
  77.  
  78.  
  79.  
  80. /*
  81.  * DEGASPIX: Image DEGAS Elite
  82.  */
  83. typedef
  84.     struct
  85.     {
  86.         unsigned    int    rez;                    /* R‚solution */
  87.         unsigned    int    color[16];            /* Palette des 16 Couleurs */
  88.         unsigned    int    bitmap[ 32000 / sizeof(unsigned int) ]; /* Bitmap */
  89.         unsigned int    rsvd[16];            /* Ce qu'il reste derriŠre */
  90.     }
  91.     DEGASPIX;
  92.                     
  93.  
  94. /*
  95.  * TEXTLINE: Ligne intégrée à un texte avec ptrs next/prev & info
  96.  */                  
  97. typedef
  98.     struct        textline
  99.     {
  100.         struct textline    *prev;        /* Ptr sur Ligne pr‚c‚dente */
  101.         struct textline    *next;        /* Ptr sur Ligne suivante */
  102.         struct
  103.         {
  104.             int    bufsize     : 15;        /* Taille du buffer d'‚dition contenant cette ligne (\0 non compris) */
  105.             int    continued : 1;
  106.         }                        info1;
  107.         int                    length;        /* Longueur de cette ligne (\0 non compris) */
  108.         char                    *text;        /* Pointeur sur le texte */
  109.     }
  110.     TEXTLINE;
  111.    
  112.  
  113. /*
  114.  * TEXTINFO: Infos sur un texte
  115.  *
  116.  * Purpose:
  117.  * --------
  118.  * Fournit point d'accŠs vers la 1ere et derniŠre ligne au format
  119.  * TEXTLINE d'un texte
  120.  *
  121.  * Notes:
  122.  * ------
  123.  *
  124.  * Notes:
  125.  * -----
  126.  * En COURS:
  127.  * Virer topline et le mettre dans une structure contenant aussi un
  128.  * ptr sur le reste de TEXTINFO. Cette structure pourra alors etre
  129.  * liee a WIPARAMS par l'intermediaire de WORK_DRAW (25.11.93)
  130.  * Mˆme chose pour le curseur...
  131.  * 
  132.  * History:
  133.  * --------
  134.  * 1993: fplanque: Created
  135.  * 25.05.94: fplanque: Ajout de variables de gestion du curseur
  136.  * 25.05.94: fplanque: Sorti toutes variables concernant l'affichage ds fenetre GEM vers TEXT_DRAWPAR
  137.  */
  138. typedef
  139.     struct
  140.     {
  141.         TEXTLINE        *    firstline;            /* Ptr sur 1Šre ligne du texte affiché */
  142.         TEXTLINE        *    lastline;            /* Ptr sur derniŠre ligne du texte */
  143.         long                nb_lignes;            /* Nombre total de lignes */
  144.     }
  145.     TEXTINFO;
  146.  
  147.  
  148. /*
  149.  * TEXT_DRAWPAR: paramŠtres n‚cessaires … l'affichage d'un texte
  150.  * dans une fenˆtre.
  151.  *
  152.  * Purpose:
  153.  * --------
  154.  * Fournit toutes les informations pour l'affichage d'un texte
  155.  * lorsque le texte est affich‚ dans une fenˆtre:
  156.  * la ligne du haut de la fenetre, la fonte, couleur etc...
  157.  * Position du curseur, etc...
  158.  *
  159.  * Notes:
  160.  * ------
  161.  * Du au pointeur *topline, le texte ne doit etre affiche que dans
  162.  * une seule fenetre a la fois
  163.  *
  164.  * Suggest:
  165.  * --------
  166.  * Virer topline et le mettre dans une structure contenant aussi un
  167.  * ptr sur le reste de TEXTINFO. Cette structure pourra alors etre
  168.  * liee a WIPARAMS par l'intermediaire de WORK_DRAW (25.11.93)
  169.  * Mˆme chose pour le curseur...
  170.  * 
  171.  * History:
  172.  * --------
  173.  * 25.05.94: fplanque: Created
  174.  */
  175. typedef
  176.     struct
  177.     {
  178.         TEXTINFO        *    pTextInfo;        /* ptr sur les infos sur le texte en RAM */
  179.         TEXTLINE        *    pTextLine_top;    /* Ptr sur 1Šre ligne affich‚e en haut de la fenˆtre */
  180.         long                l_topline;        /* No de la ligne en haut de la fenetre [0...] */
  181.  
  182.         int                n_points;        /* Taille en "points" */
  183.         int                n_char_h;        /* Hauteur d'un caractŠre: */
  184.         int                n_cell_w;        /* Largeur d'un emplacement caractŠre */
  185.         int                n_cell_h;        /* Hauteur d'un emplacement caractŠre */
  186.  
  187.         /*
  188.          * Pour textes non ‚ditables seulement:
  189.          */
  190.         long                l_nbLinesMax;    /* Nbre de lignes … conserver en m‚moire, les plus vieilles sont d‚truites */
  191.  
  192.         /*
  193.          * Edition:
  194.          * Si le texte est Read Only, pTextLine_edit === NULL
  195.          */
  196.         TEXTLINE        *    pTextLine_edit;    /* Ligne en cours d'‚dition; porte le curseur */
  197.         long                l_LigneCsr;            /* No Ligne en cours d'‚dition */
  198.         int                n_ColCsr;            /* Colonne ou se trouve le curseur [0...nb_cars] si nb_cars:apres dernier caractŠre  */
  199.     }
  200.     TEXT_DRAWPAR;
  201.  
  202.  
  203. /*
  204.  * DATABLOCK: Bloc de donn‚es
  205.  *
  206.  * History:
  207.  * --------
  208.  * 19.06.94: Created
  209.  */
  210. typedef
  211.     struct
  212.     {
  213.         char                *    p_block;            /* Donn‚es */
  214.         unsigned    long        ul_length;        /* Longueur de ce bloc */
  215.     }
  216.     DATABLOCK;
  217.    
  218. /*
  219.  * DATAUNION: Ptr sur une entit‚ de donn‚es
  220.  *
  221.  * History:
  222.  * --------
  223.  * 19.06.94: Vir‚ le ptr texte direct
  224.  */
  225. typedef
  226.     union
  227.     {
  228.         PAGEARBO            *    pagearbo;    /* Page arborescence (DTYP_ARBO) */
  229.         DATABLOCK        *    dataBlock;    /* Block de donn‚es brutes (DTYP_PAGES, DTYP_TEXTS ) */
  230.         DATA_RECORDS    *    records;        /* Enregistrements (DTYP_DATAS) */
  231.         DEGASPIX            *    degaspix;    /* Image Degas (DTYP_PICS) */
  232.         void                *    x;                /* G‚n‚rique */
  233.     }
  234.     DATAUNION;
  235.  
  236.  
  237. /*
  238.  * DATASTATE: Etat des donn‚es:
  239.  *
  240.  * 06.08.94: fplanque: Created
  241.  */                                    
  242. typedef
  243.     struct
  244.     {
  245.         BOOL                b_open    :    1;            /* != 0 si  fenˆtre ouverte dessus */
  246.         unsigned int    sstate    :    2;            /* indication de sauvegarde des donn‚es */
  247.     }
  248.     DATASTATE;
  249.            
  250.                                     
  251. /*
  252.  * DATAPAGE: Page de donn‚es
  253.  *
  254.  * Purpose:
  255.  * --------
  256.  * Ajoute … une Entit‚ de donn‚es, un nom, un commentaire etc...
  257.  * et l'insŠre ds une liste chain‚e
  258.  *
  259.  * Suggest:
  260.  * --------
  261.  * Peut ˆtre un sous type pour pr‚ciser le DATATYPE ?
  262.  *
  263.  * History:
  264.  * --------
  265.  * 11.07.94: fplanque: ajout du membre DATATYPE
  266.  * 06.08.94: fplanque: remplace le int state par un DATASTATE
  267.  * 15.12.94: ajout‚ backptr vers le DATADIR auqeulest reli‚e la DATAPAGE
  268.  */
  269. typedef
  270.     struct        datapage
  271.     {
  272.         struct datapage *    prev;            /* Ptr sur Page pr‚c‚dente */
  273.         struct datapage *    next;            /* Ptr sur Page suivante */
  274.         struct datadir     *    pDataDir;    /* Ptr sur le Dir auquel appartient la page */
  275.         DATATYPE                DataType;    /* Type de donn‚es */
  276.         char                    nom[13];        /* Nom de cette page */
  277.         DATAUNION            data;            /* Pointeur sur les donn‚es de la page */
  278.         char                    *comment;    /* Commentaire sur cette page (… titre informatif) */
  279.         DATASTATE            DataState;    /* Status */
  280.     }
  281.     DATAPAGE;
  282.  
  283.  
  284. /*
  285.  * DIRSPEC: Sp‚cifications d'un directory d'arborescence
  286.  *
  287.  * Purpose:
  288.  * --------
  289.  * Fournit des informations compl‚mentaires et sp‚cifiques au type 
  290.  * de donn‚es g‚r‚es sur un directory
  291.  * pour l'arbo:
  292.  *     - nom du lien arbo servant de point d'entree dans le directory
  293.  *     - Autres rajout‚s le 14.02.95, pris dans DATADIR
  294.  */
  295. typedef
  296.     struct
  297.     {
  298.         KEYWORD_LIST *    liens_in;        /* Liste des nomd des liens-arbo */
  299.                                                 /* d'entr‚e dans ce dir */
  300.         unsigned            max_objs;        /* Nombre d'objets maximum avant modification taille zone objects */
  301.         unsigned            nb_objs;            /* Nombre d'objets */
  302.         unsigned            max_iblks;        /* Nombres d'ICONBLOCKs maxi */
  303.         unsigned            nb_iblks;        /* Nombres d'ICONBLOCKs */
  304.  
  305.         unsigned        *    dir_map;            /* Tableau repr‚sentatif */
  306.                                                 /* Format:
  307.                                                  *    - Largeur
  308.                                                  *    - Hauteur
  309.                                                  *    - Elements...
  310.                                                  */    
  311.     }
  312.     DIRSPEC;
  313.  
  314.  
  315. /*
  316.  * DATADIR: Dossier de Pages de données
  317.  *
  318.  * Purpose:
  319.  * --------
  320.  * Regroupe plusieurs pages de données dans une sorte de dossier
  321.  * en mémoire.
  322.  *
  323.  * Suggest:
  324.  * --------
  325.  * Pour ‚viter la redondance de ptrs sur le DATAGROUP, on pourait faire
  326.  * en sorte que le ROOT pointe sur le DATAGROUP (son "pŠre") et on
  327.  * ferait la diff‚rence datadir/datagroup grâce au fait que le pŠre
  328.  * du DATAGROUp serait NULL (cr‚er une UNION datadir/datagroup/generic 
  329.  *
  330.  * 15.07.94: Ajout de ptrs sur DATADIR parent et DATAGROUP
  331.  * 07.08.94: fplanque: remplace le int state par un DATASTATE
  332.  */
  333. typedef
  334.     struct    datadir
  335.     {    
  336.         /*
  337.          * Le ptr sur datagroup fut enlev‚
  338.          * puis remis le 15.07.94
  339.          */ 
  340.         struct datadir     *    pDataDir_parent;    /* Directory parent */
  341.         struct datagroup     *    pDataGroup;            /* Groupe de donn‚es */
  342.  
  343.         ICONBLK    *    iconblks;            /* Pointe sur le tableau d'iconblk */
  344.  
  345.         unsigned        nb_elts;                /* Nombre d'‚l‚ments DATAPAGE */
  346.         DATAPAGE    *    data_start;            /* Pointe sur premiŠre page */
  347.         DATAPAGE    *    data_end;            /* Pointe sur derniŠre page */
  348.  
  349.         DIRSPEC    *    dir_spec;            /* Sp‚cifications compl‚mentaires */
  350.  
  351.         /* Ces variables ont ‚t‚ transf‚r‚es depuis le datagroup dans le datadir: */
  352.         /* en plusieurs ‚tapes jusqu'au 4 Mai 93 */
  353.         DATASTATE    DataState;            /* Status. Note: Le bit OPEN n'est pas utilis‚ puisk'on a carr‚ment un compteur de fens ouvertes */
  354.         int            nb_dirs;                /* Nb de fenetres DIRs ouvertes sur ces donn‚es */
  355.         int            nb_edits;            /* Nb de donn‚es ouvertes en ‚dition */
  356.     }
  357.     DATADIR;
  358.  
  359.  
  360. /*
  361.  * DATAGROUP: Unit‚ de donn‚es contenant tous les dossiers de ce type
  362.  *                                                                   
  363.  * Purpose:
  364.  * --------
  365.  * Tous les dossiers contenant un certains types de données sont
  366.  * reli‚es … un ROOT.
  367.  * La structure DATAGROUP donne un point d'accŠs … ce ROOT.  
  368.  * Le datagroup correspond g‚n‚ralement … un fichier sur disque.
  369.  */
  370. typedef
  371.     struct    datagroup
  372.     {
  373.         int            icon_no;                /* Num‚ro de l'ic“ne associ‚e */
  374.         DATATYPE        DataType;            /* Type, ex: DTYP_ARBO */
  375.         char            data_device[5];    /* Nom de l'unit‚ de stockage virtuelle */
  376.         DATADIR        *root_dir;            /* Ptr sur Directory ppal */
  377.         char            filename[13];        /* Nom du fichier charg‚ */
  378.         char            *filepath;            /* Ptr sur R‚pertoire de ce fichier */
  379.     }
  380.     DATAGROUP;
  381.                            
  382.                            
  383. /*
  384.  * FTA: File Transfer Area (Woaw Genial!) 
  385.  *
  386.  */                           
  387. typedef
  388.     union            
  389.     {
  390.         DATADIR    *    datadir;            /* Ptr sur un dossier */
  391.         DATADIR    **    datadir_ptr;    /* Adr d'un Ptr sur un dossier */
  392.         DATAPAGE    *    pDataPage;        /* Ptr sur DataPage */    
  393.         TEXTINFO    *    textinfo;        /* Ptr sur infos texte */
  394.         int            param;            /* ParamŠtre */
  395.     }
  396.     FTA;
  397.                            
  398.                            
  399. /*
  400.  * Fin du test anti red‚finition:
  401.  */
  402. #endif
  403.